Addressable memory fft processor with exponential term generation

ABSTRACT

The fast Fourier transform is a known algorithm which can be written:

United States Patent 1 1 Garde 1 1 Oct. 23, 1973 ADDRESSABLE MEMORY FFT PROCESSOR WITH EXPONENTIAL TERM GENERATION [75] Inventor: Douglas Garde, Woburn, Mass.

[73] Assignee: SolartronElectronic Group Ltd.,

Farnborough, England 22 Filed: May 12,1971

21 Appl. No.: 142,586

[52] US. Cl. 235/156 [51] G06f 7/38, G06f 15/34 [58] Field of Search 235/156, 164

[56] References Cited UNITED STATES PATENTS 3,517,173 6/1970 Gilmartin, Jr. et al. 235/156 3,584,781 6/1971 Edson 235/156 3,591,784 7/1971 Cutter... 235/152 3,601,592 8/1971 Cutter 235/156 Primary -ExaminerCharles E. Atkinson Assistant Examiner-David H. Malzahn Attorneywilliam R. Sherman, Stewart F. Moore, Jerry M. Presson, Leonard R. Fellen and Roylance, Abrams, Berdo & Kaul m at each of which the above equation represents 2'' equations corresponding to all different combinations of bits b other than b,,, The terms A become complex. A gives the required terms of the Fourier series. This algorithm is engineered economically by subjecting the terms (1 1 to vector rotation through the angle 2 1r 0, where 0 i (0' 1 and then adding and subtracting them from the terms A, ,(...0...)togenerateA,(...l....)andA, 0 To avoid the need for a large look-up store giving all required values of sin 0 and cos 0, as is necessary in direct vector rotation, the rotation is effected by so-called CORDIC computation (pseudomultiplication). If the vector A l to be rotated is represented as X iY, it can be shown that the operator are 21r0 21:21 (0- F, a; tan- 2-1;

Thus the required angle of rotation 0 (in radians/2'rr) b,,, 2 b,,, 2* 1 b,,, I 2" is stored, the vector X iY, after an initial 90 rotation step, is multiplied by successive terms 1 +iaj 2*, and a, tan 2 is added to or subtracted from the stored angle, in accordance with whether a, is +1 or 1 and the value of a, is changed from the existing to the other value when the stored angle goes through zero. A look-up store for tan 2 is required but only five words have to be stored because, for j l, tan"2 is approximated sufficiently closely by 2".

11 Claims, 6 Drawing Figures PAIENIEDHEI 23 I973 SEEN 2 [if EEHSQQQ up: @3320? q I 2 W N 5 W 3 3 5 nm 7 w D. r 0 9 k S 1. 9 2 F E H 3 C R E m u m w v 1 mp mw fi 3 A NW N .t 8 7 3 E WWW/ 2 H 7 .1 Q Q; m 12 R f 7 E Q B 6 S 4 R Q M 2 F U G I 1. E F I N 4 Q A S 2 .I 0 R 5 2 Q 1 S 4 L Q. 2 w H W U M MM P M 3 x m M D Q 5 A V 9 REGISTER PAIENTEDncI 23 ms 3. 767' 9 SHEET 4 0F 5 X REGISTER 7Z- FULL ADDER Q5 SCALER Q5 TA R585? {R655 90 summer col/Mme RLG/STH? v Q I Q8- as 1,553 2 9 53*753 L Aoo/susmcr SCALER FULL -73 4005/? Y REGISTER /G. x REGISTER FULL 74 4 L ADDER SEALER :Df ADD/ Q9 Q9 SUBTRACT 7 RESET RESE READ ONLY comm/e REG/SH 99,553 STORE as Q L Q8 R 62/0 I QQ 1 77 1 $4 QIO 7 92 9/ ADD/ SUBTRACT Q10 SCALER i --1 7 73x FULL v Y REGISTER ADDR PATENTEDUBI x REGISTER k V FULL 72 ADDER T0 0(1) X(o) REGISTER V ORD(0) ADD/SUBTRACT an 0(1) 0R 0(0) ADDRESS SELECTION '7 'ADD/SUBTRACT Y REGISTER 7 -73 FULL A'DDER 1000) Y (o) REGISTER OR 0(0) ADDRESSABLE MEMORY FFT PROCESSOR WITH EXPONENTIAL TERM GENERATION This invention relates to a special purpose digital computer for implementing the fast Fourier transform which is an algorithm brought into prominence by a paper: J. W. Cooley and J. W. Tukey An algorithm for the machine calculation of complex Fourier series Mathematics of Computation, vol. 19, pp. 297-301, April 1965. The direct application of the equations of the complex Fourier series involves N operations (complex multiplication followed by addition) where there are N terms in the series, i.e., N data points. If N 10 there are 10 operations. The fast Fourier transform eliminates the redundancy which arises if N is a product of several factors (when certain symmetries appear in the equations) and the case of particular interest to digital computation is when N 2". The number of operations is then reduced to N'log N, i.e., m'N. If N= 2 (approximately 10 the number of operations is only 10,240. Since theoperations can be grouped in pairs involving the same complex multiplication and if the input data is loadedsuch that the spectral folding redundancy is avoided, then the number of operations reduces to 2,560.

The fast Fourier transform can be programmed on a general purpose computer but it has been shown that this is an inefficient technique and proposals havebeen made for special purpose computers. See for example, R. R. Shively A Digital Processor to Generate Spectra in Real Time IEEE Transactions on Computers vol. C-l7. No. 5, May 1968. The object of this invention is to provide a greatly simplified special purpose computer.

The input data can be represented by N terms of the form A (b,,, b,,, b b where h to b are m bits of the address code for the terms. The computation proceeds in a series of levels whereby the terms A A A A are calculated, the terms of a general level being represented as A,. The algorithm can be written A! m-l ill-2 m-l 1 l1( ml m2 O 12,12 A, (b,,,. b,,, l b b Exp. 1 e e b,,, 0 or 1. These latter alternatives thus enable two terms A, to be computed from the corresponding A the convention in equation (1) being that the bits b other than b,,, are the same in all three terms of the equationilfhere are thus 2"" equations (1) for each level, corresponding to all different combinations of bits b other than b The final terms A are (subject to a re-ordering process which is known and with which the present invention is not concerned) the required terms of the Fourier series. I Each application of equation (1) in effect requires the vector Alli (Q l tobe rotated by the angle 0 (whose two different values for b,,,-, 0 or 1 merely differ by FS O YanGYliHadHed to A zi 0 It will in fact be more convenient to rewrite equation (I) as equations (3) and (4) using a more condensed notation:

1( l-1 I-l P i )l where 0 is given by equation (5) for both equations (3) and (4) It will be appreciated that, in all the equations herein 6 is an angle expressed in radians /21r.

The vector rotation involves a complex multiplication which has been effected in previous proposals on the basis of the following equations:

IfX iY (X+ iY) Exp (21ri0) then X X cos 2110 Y sin 21rd and Y X sin 21r0 Y cos 21r0.

Each operation thus involves four multiplications and, what is more, a large store is necessary to provide the requisite values of sin 2 0 and cos 2 0. It isnot satisfactory, on considerations of speed, to calculate the cos and sin valueseach time they are required. The present invention requires only two multiplications for each operation and only a small store is necessary.

According to the present invention a special purpose digital computer for implementing the fast Fourier transform comprises a data store for the real and imaginary parts X and Y of the terms A an address register for storing the address of a term, means for causing the stored address to progress cyclically through all values thereof during each level of computation, .a level register for storing a bit identifying the level I of the computation, means responsive to each stored address and the level bit to extract the values X,., (1), Y (1), X (0) and Y (0) and to determine the value of 0 from the I most significant bits of the stored address, means for affecting vector rotation of "said values X,., (1) and Y,., (.1) through an angle having said value of '0, said vector rotation effecting means including means adapted to operate iteratively upon the values X (l) and Y (.1 to compute values KX, (l) and KY, (1 where K is a constant and X iY= (X H) Exp (21ri0), said iterative operations being of the form X, X a,

where the multipliers a, change between +1 and 1 so p2 (0 ga tan' 2- tends towards zero, means adapted to remove the constant K to derive X',., (1) and Y' (l), and means adapted to perform the following additions and subtractions:

r l-r ll The said iterative operations effect the vector rotation by a known technique, referred to as cordic computation and described, for example, in a paper by J. E. Volder entitled The CORDIC Trignometric Computing Technique" in IRE Trans. on Electronic Computer, September 1959, pages 330 to 334. The application of this technique in the computer according to the invention enables a very small read only store to be employed since it is necessary to store only a series of values tan "2", tan "2, etc.

Each of the iterative operations introduces a multiplication by a constant amount, i.e., it is not a pure vector rotation, and at the end of the P iterative operations the cumulative effect is multiplication by the aforementioned constant K. A convenient way to remove this constant is to multiply by l/K and a simple procedure for doing this will be described subsequently.

In a development of the invention the size of the read only store is further reduced by storing only the first few tan values, e.g., the first six values. This is possible because the tangent of an angle approaches the angle (in radians) at small angles and forj tan "2 2. In the embodiment described below the actual hardware implementation is to make tan 2= l/2 tan "2' forj 5.

It is preferred to base the computer upon serial shift register techniques both because these facilitate performance of many of the required operations. Nevertheless parallel techniques can be used if required.

Although one embodiment of the invention will be described in a fair amount of detail, two points should be noted. A full description of the circuits which time the various operations in the correct sequence is not given. Such a description would merely be tedious and would not add to an understanding of the invention. The necessary techniques are well known in digital data processing equipment in general. Secondly there are many possibilities for modifying the details of the com- FIG. 3 shows the circuit for determining the values of a, from the 8 value,

FIG. 4 shows a data processor circuit in the configuration for effecting a cordic vector rotation,

FIG. 5 shows the processor circuit in the configuration for multiplying by UK, and

FIG. 6 shows the processor circuit in the configuration for performing equations (8) to (l l In FIG. 1 a data store 10 initially has the 2" terms A of A, entered therein, the real and imaginary parts thereof X and Y being stored separately. If .4 is real, all Y will be zero but, as the computation progresses imaginary parts Y Y Y etc., will appear. At each level of computation the terms are addressed in sequence by an m-bit counter (register) 11 in conjunction with an m-bit shift register 12 which holds a single bit which identifies the level I. This bit is initially in the most significant stage of the register 12 and is shifted to the next stage each time the counter 11 overflows. Shift inputs to shift registers are identified herein by double-headed arrows. When the single bit shifts back into the most significant stage, an end pulse is emitted on a line 13 to signal that the computation is complete and that the terms in the store 10 are now the required final terms A,,,.

The bit identified by the register 12 is used to modify the corresponding bit of the address in the register 11 to derive two addresses (...1...) and(...0...), which will be referred to as D(l) and D(O). Also the most significant bits of the register 11, down to that identified by the bit in the register 12, are entered in reverse order in a register 14 to provide the value of 0. In practice a suitable value of m may be 10. For simplicity an example of the addressing will be given with m 3. First level Number in register 12 is 100.

Counter 110(1) D(O) 2 2' 2' 000 I00 000 0 0 0 OOl l0l OOI 0 0 O OIO H0 010 0 0 0 01 I III 0H 0 0 0 I00 000 O O 0 I01 10] 00l 0 0 0 H0 H0 0l0 O 0 0 III Ill 01! 0 0 0 Second level Number in register 12 is 010,

000 010 000 0 0 0 001 Oil 001 O 0 0 010 010 000 0 0 O OH OH 001 0 0 0 I00 I10 I00 0 l 0 101 III 101 0 l 0 I10 I10 I00 0 l 0 III III 101 0 l 0 Third level Number in register 12 is OOI 000 00! 000 0 O O OOI 001 000 0 O 0 010 CH 010 0 0 0 OH OH 010 O l 0 100 lol I00 0 0 I l0] I0] I00 0 0 I llO Ill 0 l I III III 110 0 I I It will be noted that, numbers in the counter 11 which differ only by the bit in the place identified by the number in the register lead to the same pair of addresses D(l) and D(O). Measures are taken (and will be described below) to ensure that each pair of addresses is used once only.

The addresses D(l) and D(O) are used to determine the numbers X (1), Y,., (I), X (0) and Y, (0) which are read out of the data store 10 and fed to a processor 15 from which the processed numbers are returned to the store, the re-entry addresses also being specified by D(l) and D(O).

The processor essentially comprises two adders which are used firstly to perform the iterative operations of equations (6) and (7), secondly to perform a multiplication by UK and thirdly to perform equations (8) to (1 1). The performance of equations (6) and (7) requires the multipliers a, to be determined. This is effected by recirculating the contents of the 0 register 14 through a full adder 16 which, in a manner known per se can be arranged either to subtract or add, being initially set to subtract. The second input to the adder 16 is from a read only memory 17 which stores the values tan 2, tan "2", etc. As each addition or subtraction occurs the overflow bit is monitored and, if this bit is l the state of a bistable flip-flop 18 is altered. The two states of this flip-flop correspond respectively to a, 1 and a, +1 and additionally correspond respectively to performance of subtraction and addition by the adder 16.

Turning now to FIG. 2, the derivation of D( l D(O) and 0 will be considered in more detail. The counter 11 consists of a reversible shift register 20 connected in a loopvia a full adder 21 which increments the number in the register 20 by 1 when an increment signal O1 is applied to a terminal 22. Such a signal is applied each time the processor 15 of FIG. 1 is ready to operate on the next two terms and causes the application of shift pulses S1 to a right shift input 24, thereby causing one complete recirculation of register and consequent incrementation of the contents thereof. A signal ESl marking the end of the shift pulse train opens a gate 25 to test if overflow of the counter 11 has occurred; if so a right shift pulse is applied to a shift input 26 to the register 12. Simultaneously a gate 27 tests to see whether the computation has been completed and, if so, provides the end signal on line 13.

The shift pulses S1 are also applied to the right shift input 26 to the register 12 to recirculate the contents thereof through a gate 28 opened by the increment signal Q1. The outputs of the two shift registers recirculating in synchronism are applied to a gate 29 which tests whether the bit in the register 20 at the same position as the single bit in the register 12 is a l or 0; if it is a O the addresses D( l) and D(O) are not used in order to avoid duplication of addresses. To this end the output of the gate 29 is applied to a D-type flip-flop 30 whose clock input is clocked by the single bit in the register 12. At the end of the recirculation the signal ESl monitors the state of the flip-flop 30. If 1, a gate 31 passes a signal 02 which functions as the signal 01 and immediately institutes a further cycle of the shift registers. If however Q l, a signal 03 is generated by a gate 32 and used as described below.

As the shift registers 12 and 20 recirculate, their contents are used for form D(l) and D(O) in two buffer registers 35 and 36. The bits of the number in the register 20 plus the l bit in the register 12 enter the D( I) register 35 through an OR gate 37. The bits of the number in the register 20 enter the D(O) register 36 through an AND gate 38 to which the output of the register 12, inverted by an inverter 39, is also applied.

The abovementioned signal 03 is used to initiate the entry of 0 in the register 14 by setting a bistable flipflop 42 and initiating a shift pulse train S2 which is applied to left shift inputs 43 and 44 of the registers 20 and 12 to cause them to effect complete reverse recirculations via gates 45 and 46, which are opened by the Q output of a flip-flop 42', identified as 04. The Q output Q4 of the flip-flop 42 opens gates 47 and 48. The gate 47 allows the shift pulses S2 to pass to a right-shift input 50 of the register 14 and the gate 48 allows the bits coming out the register 20 in reverse order to enter the register 14 in normal order. When the single 1 bit,

in the register 12 appears, the flip-flop 42 is reset to freeze the value of 0 in the register 14 (although the registers 20 and 12 complete their recirculations).

When the reverse recirculation has been completed a signal Q5 is generated and the computer proceeds to determine a as will now be described with reference to FIG. 3.

FIG. 3 shows the 0 register 14 connected in a recirculating loop via a full adder 52 and a gate 53 which is opened by a signal Q6 only during each train of shift pulses S3 applied to the right shift input 50 to effect a complete recirculation of the register. The full adder is used either to subtract or add the contents of a further shift register 54 from the contents of the register 14, tan 2"? being held in the register 54 and the pulses S3 being applied to a right-shift input 55 thereof.

Initially the signal Q5 resets a J-K flip-flop, constituting the bistable 18 of FIG. 1, which provides a signal a on its Q output. When a l, a 1. When the signal 5 on its fioutput is Z= 1, then a, -1. The signal a controls the full adder52 so that when a l the adder adds and when a 0 the adder subtracts.

At the end of each shift pulse train S3 an end of train signal ES3 monitors the overflow bit via a gate 56 whose output is applied to the D input of the flip-flop 18. This flip-flop sets Q 0 every time an overflow bit appears, being clocked by the signal E83.

The values of tan 2' to tan 2'' are transferred to the register 54 from the read only memory or store 17 which is addressed by a small counter 57. This counter is reset to zero by the signal Q5 which marks the end of the determination of D( l D(O) and 0 and thus addresses tan *2 and transfers the value thereof to the register 54. Each end of train signal BS3 increments the counter 57, so long as a gate 59 is open, and thus transfers the successive values of tan 2", tan 2' and so on to the register 54.

The gate 59 is enabled by the Q output Q7 of a setreset bistable flip-flop 60, this being set by the signal Q5, and reset by a circuit 61 which detects when the counter has counted up to six. When the flip-flop 60 resets, a pulse from its6 output 67 causes an extra shift of the register 54 which is now closed in a loop through a gate 62 enabled by 67. This has the effect of dividing the contents of the register 54, namely tan 2', by two to form tan *2 as l/2 tan "2. The W output of the flip-flop 60 also enables a gate 63 through which subsequent pulses ES3 pass to effect the extra shift, whereby each new value of tan "2" is formed by dividing the previous value by two.

In the following description it is assumed that each value of a, is used in the simultaneous implementation of equations (6) and (7). It is also possible to form all the values of 11,, buffer them and then implement equations (6) and (7).

Equations (6) and (7) are implemented by the processor 15 of FIG. 1 which is shown in more detail in FIG. 4. In FIG. 4 the values of X (l) and Y (l) as addressed by D(l) are transferred, using well known techniques, from the data store 10 (FIG. 1) into X and Y registers 70 and 71. The registers 70 and 71 are connected in recirculating loops through respective full adders 72 and 73 which add to or subtract from the contents of each register the contents of the other register scaled down by respective scalers 74 and 75. The sealers are commercially available circuits which select an output from the corresponding shift register in accordance with an address buffered in a register 77. When the address is zero (i.e., j the least significant stage is selected and hence X, is combined with Y, unsealed and Y, is combined with X, unscaled. Whenj l, the second least significant stage is selected and hence X, is combined with l/2 Y, and Y, is combined with 1/2 X,, and so on. In this way the scaling factor 2" in equations (6) and (7) is introduced.

Whether any combination is additive or subtractive depends on the value of a, and therefore the signal g from FIG. 3 is used to determine whether the adder 72 adds or subtracts and the signal a is used to determine whether the adder 73 adds or subtracts.

The scaler address register 77 is controlled by a recirculating counter 78 with a capacity of P equal to the number of bits in each value X and Y, which may be 16 for example. The counter 78 counts the shift pulses S3 which are applied to the shift registers 70 and 71. Initially the signal Q resets both counter 78 and register 77 to zero forj= 0. At the end of the first recirculation the counter 78 is back to zero but is incremented to 1 by the end of train pulse ES3. Each such pulse transfers to the register 77 the new value in the counter 78, this value remaining unchanged until the next pulse ES3.

The counter 78 is used in ensuring that only P-J bits pass from the sealers 74 and 75 to the adders 73 and 72 respectively through gates 90 and 91 respectively. (The lastj bits are the least significant bits of the new value of X, or Y, entering the register 70 or 71 from the adder 72 or 73). The gates 90 and 91 are opened by a bistable flip-flop 92 which is set by the pulse Q5 and each pulse ES3 and reset by a signal Q8 when the counter 78 reaches the value P.

When P complete recirculations of the circuits of FIGS. 3 and 4 have been effected by P trains of pulses S3, a further sequence of trains of pulses S4 is used to multiply the numbers KX and KY now in the registers 70 and 71 by UK. These trains are preceded by a pulse Q9 and each is succeeded by a pulse BS4. The circuit of FIG. 4 is switched to the configuration shown in FIG. 5 in which the outputs of the gates 90 and 91 are connected to the adders 72 and 73 respectively. By selectively adding and subtracting the scaled values from the X and Y registers to the contents of the same registers the contents thereof are multiplied by 1/K. The sequence of adding and subtracting operations necessary to achieve the required value of K is determined by a small read only store 95 controlled by the register 77 and whose output controls the add/subtract input of both adders 72 and 73. In this operation neither addition nor subtraction will be necessary for some values of j and for such values the store 95 provides an output signal Q which immediately steps on the counter 78 and puts the new value of j in the register 77. Thus recirculations under the action of pulses S4 are only effected for values ofj which require an adding or subtracting operation. This minimises the time taken for multiplying by UK.

It can be shown that under the control of D(O). The registers are shifted through closed loops established by gates 98, 99, and 101, all enabled by a signal 011, under the control of shift pulses S5 followed by end of train pulses E85 which clock a flip-flop 102, causing this flip-flop alternately to be true and false. The Q output Q12 of the flip-flop 102 causes the adders 72 and 73 to add (for equations (8) and (9) and subtract (for equations (10) and (11)) alternately. The signal Q12 also operates in conjunction with the D( l and D(O) registers 35 and 36 (FIG. 2) to ensure that X, (0) and Y, (0) are returned to the address D(O) in the store 10 and that X, and Y, are returned to the address D( l At the end of two trains of pulses $5 the next signal O1 is given to select the next address and recommence the sequence of operations described.

The processor 15 is of course switched to the configurations of FIGS. 4, 5 and 6 by means of appropriate gates controlled by the overall sequencing and timing circuits, illustrated simply as a block in FIG. 1.

What we claim is:

l. A special purpose digital computer for implementing the fast Fourier transform, the computer comprismg:

a data store for storing the real and imaginary parts X, and Y, of the terms A,

an address register for storing the address of a term;

pulse generator means connected to said address register for progressively stepping the stored address cyclically through all values thereof during each level of computation; a level register for storing a bit identifying the level 1 of the computation;

means responsive to each stored address in said address register and the level bit in said level register to extract the values X, l Y, 1 X, ,(0) and Y, ,(0) from said data store and for producing a signal representative of the value of 0 from the most significant bits of the stored address;

means connected to said means for extracting and producing thereby to receive said extracted values X, 1) and Y,.,( 1) and said signal representative of the value of 0 for effecting vector rotation of said values X, .,(1) and Y,. ,(1 through an angle having said value of 0, said means for effecting rotation including means for operating iteratively upon the values X,.,( 1) and Y,..,( 1) to compute values 104 1) and [KX, l KY, 1) where K is a constant and X +1 Y (X+i Y) Exp(2'rri0), said iterative operations being of the form where the multipliers a, change between +1 and -1 so 65 that z-1( XII-1(1) Y, (1) l-1( Yuan) 2. A digital computer according to claim 1, wherein the means for operating iteratively further includes a store holding the first values only of tan 2' and means connected to said store for repeatedly dividing by two the preceding values in order to derive subsequent values. g g,

3. A digital computer according to claim 1, wherein said address register and said level register are both shift registers, and wherein there is further provided an adder; means for connecting said address register in a recirculating loop including said adder for incrementing the address by 1 in each recirculation; and means for connecting said level register in a recirculating loop to recirculate in step with said address register.

4. A digital computer according to claim 3, wherein said means for extracting and producing further comprises first and second buffer registers for holding the addresses of X, ,(0) and Y, ,(0) on the one hand and X, 1 and Y, 1) on the other hand; means for shifting the address in said address register into both said first and second buffer registers; and means for forcing the bit corresponding to the I bit in said level register to 0 in said first buffer register and to l in said second buffer register under control of said level register.

5. A digital computer according to claim 3, wherein said means for producing the value of 0 includes a shift register for storing 0, means for synchronous reverse circulation of said address register and said level register, means for shifting bits from said address register into said shift register for storing 0, and means stopping said means for shifting bits when the 1 bit in the level register is detected.

6. A digital computer according to claim 3, further comprises means responsive to overflow of said address register for shifting the 1 bit in said level register to the next less significant position.

7. A digital computer according to claim 3, wherein said means for recirculating further comprises means for detecting, during the incrementing recirculation of the address, when the bit in said address register located in the same position as the 1 bit in said level register has a predetermined one of its two possible values and wherein said means for detecting is operative to institute immediately a further incrementing recirculation without performance of equations (6) to (l l 8. A digital computer according to claim 1, wherein said means for producing the value of 0 includes a register holding (0-%), and wherein said means for operating iteratively comprises control means for adding to or subtracting from the contents of said register for holding (0 A) the values of tan *2 in accordance with the values of a,, said control means being responsive to the values of thereby created to determine the values of a, such that the values of tend progressively towards zero.

9. A digital computer according to claim 1, wherein said means for operating iteratively includes means for counting the iterative operations, first and second shift registers for storing X and Y values, respectively, first and second adder/subtractors connected in recirculating loops including said first and second shift registers, respectively, first and second scalers connected between said first and second shift registers each being connected to the respective non-corresponding one of said first and second adder/subtractors wherein said first and second scalers are controlled by said means for counting so as to introduce the multipliers 2 in equations (6) and (7), and means for controlling the add and subtract functions of said first and second adder/subtractors to add and subtract selectively in dependence upon the values of a,.

10. A digital computer according to claim 9, wherein the means for removing the constant K further comprises means for connecting said first and second scalers to the corresponding said first and second adder/- subtractors and means. forrecirculating said first and second shift registers wherein said first and second scalers progress through states of different significance while said first and second adder/subtractors are caused to add and subtract in a predetermined sequence, such that KX,'(1) and KY;( 1) are both multiplied by UK.

11. A special purpose computer for performing the fast Fourier transform on a plurality of data terms in a succession of levels of computation, the number of levels being dependent upon the number of the data terms to be transformed, the computer comprising:

i. data storage means for storing each data term at a predetermined address therein;

ii. means for extracting data'terms in pairs from said data storage means, the data term pairs being determined in accordance with the level of computation and with their addresses in said data storage means;

iii. a central processor arranged, at each level of computation, to receive the pairs of terms extracted from said data storage means said central processor "2' radians/211' and are constituted by a series including means for effecting vector rotation of of iterative operations of the form one of the terms of each pair through an angle determined by the addresses of the terms of the pair 2 j and the level of computation, and means for adding 5 (6) and subtracting the result of the vector rotation to the other term to form a new pair of terms; and ZJXJ' iv. means for returning each new pair of terms to said 7 data storage means, to the respective addresses of where the multipliers a, change between +1 and l in the pair of terms from which the new pair of terms 10 such a manner that the algebraic sum of said rotational was derived; wherein said means for effecting vecsteps and the respective angle through which vector rotor rotation comprises: tation is to be effected tends to zero, whereby to effect a. means for subjecting the real and imaginary said vector rotation and simultaneously to effect multiparts, X and Y respectively, of said one tem of plication by a constant K; and each pair to a succession of rotational steps, of b. dividing means for dividing the result of said iterwhich the first step is of magnitude A radians/211 ative operations by said constant K.

and the remaining steps are of magnitude a; tan

"written:

term A 1mm I]. of UNl'l'I'll) "'I'A'I'I'IS IKlf'lf'i'l ()Z'THII'I CE 1T1 Fl GATE 0 l" C 0111113 CTION Patent 1-30. 3, 767,905 Dated October ]q7q Inventor(s) mm M NDBE It is certified that error appears in the above-identified patent and that said Letters Patent are hereby corrected as shown; below:

In the Abstract:

Rewrite abstract as follows:

The fast Fourier transform is a known algorithm which can be Ag b b .b .b1 b0 [A w bm;2 0 .b b

I A (b b v 1 5 1, Exp. M1001 where 9' is in radians/21f and is given by 0 i (b b 2 where A is the set of N 2 input data points identified by m indices b to b and where b 0 or 1. The computation proceeds in a series ml o m.Q,

of levels 1. .SL. L .m at each of which the above equation represents 2 equations corresponding to all different combinations of bits b other than b The terms A become complex. A gives the required terms of the Fourier series. This algorithm is engineered economically by subjecting the l l l. to vector rotation through the angle ZTTG where 6=i (G UNITED S'IA'IES PATENT OFFICE CERllFIC/iilii OF COIU. EJ'HON Patent 3.767.905 Dated October 22 197i Inventor (a) DOUGLAS GARDE It is certified that error appears in the above-identified patent and that said Letters Patent are hereby corrected as shown below:

and then adding and subtracting them from the terms Ag .0 to generate A l and A O To avoid the need for a large lockup store giving all required values of sin 6 and cos 0, as is necessarv in direct ctor rotation, the rotation is effected by the so-called CORDIC comoutation(D -m l i piication) .If the vector Ag f l to be rotated is represented as X+iY,it can be shown that the operator I l (l ia 2 is equivalent to the operator K where K is a i adily removed constant of multiplication and mgl a tan 2 Thus the required angle of rotation 9 (in radians/21f) Q, 9, l -2 m-l m2 2 m-IL l 2 is stored, the vector X iY after an initial 90 rotation step is multiplied by successive terms (1 'ia 2 and a tan 2 "3 is added to or subtracted from the stored angle in accordance with whether aj is +1 or 1 and the value' of a is changed from the existing to the other value; when the stored angle goes through zero. A lookup store for tan is rfiquired but only five words have to be stored because, for j l, tan J I UNITED STA'IES PATENT OFFICE CERTIFICATE OF CORE EC'I ION Patent No. 3, 761305 Dated October 23, 1973 Ir1ventor(s) DOUGLAS GARDE It is certified that error appears in the above-identified patent and that said Letters Patent are hereby corrected as shown below:

is approximated sufficiently closely by 2 Patent 210. 3 767,905

Dated October-l3 1973 Inventor( DOUGLAS GARDE It is certified that error appears in the above-identified patent and that said Letters Patent are hereby corrected as shown below:

In the Claims:

1 Column 8, line 55, amend to read KX (l) and KX L (l) KYi change "comprises" to --comprising--.

change Column 10, line 6, "0" 0 --e Column 10, line 7, change (o 1/4)" c6 (o 1/4)-- Column 11, line 14 change "tem" to term--.

Signed and Sealed this twenty-third Day of September 1975 '[SEAL] Attest:

.4 nesting Officer (mnmissimu'r nj'larenls and Trademarks 

1. A special purpose digital computer for implementing the fast Fourier transform, the computer comprising: a data store for storing the real and imaginary parts Xl 1 and Yl 1 of the terms Al 1; an address register for storing the address of a term; pulse generator means connected to said address register for progressively stepping the stored address cyclically through all values thereof during each level of computation; a level register for storing a bit identifying the level l of the computation; means responsive to each stored address in said address register and the level bit in said level register to extract the values Xl 1(1), Yl 1(1), Xl 1(0) and Yl 1(0) from said data store and for producing a signal representative of the value of theta from the most significant bits of the stored address; means connected to said means for extracting and producing thereby to receive said extracted values Xl 1(1) and Yl 1(1) and said signal representative of the value of theta for effecting vector rotation of said values Xl 1(1) and Yl 1(1) through an angle having said value of theta , said means for effecting rotation including means for operating iteratively upon the values Xl 1(1) and Yl 1(1) to compute values KX1l 1(1) and (KX1l 1(1)) KY1l 1(1) where K is a constant and X1+iY1 (X+iY) Exp(2 pi i theta ), said iterative operations being of the form Xj l Xj + aj2 jYj (6) Yj l Yj - aj2 jXj (7) where the multipliers aj change between + 1 and - 1 so that
 2. A digital computer according to claim 1, wherein the means for operating iteratively further includes a store holding the first values only of tan 12 j and means connected to said store for repeatedly dividing by two the preceding values in order to derive subsequent values.
 3. A digital computer according to claim 1, wherein said address register and said level register are both shift registers, and wherein there is further provided an adder; means for connecting said address register in a recirculating loop including said adder for incrementing the address by 1 in each recirculation; and means for connecting said level register in a recirculating loop to recirculate in step with said address register.
 4. A digital computer according to claim 3, wherein said means foR extracting and producing further comprises first and second buffer registers for holding the addresses of Xl 1(0) and Yl 1(0) on the one hand and Xl 1(1) and Yl 1(1) on the other hand; means for shifting the address in said address register into both said first and second buffer registers; and means for forcing the bit corresponding to the l bit in said level register to 0 in said first buffer register and to 1 in said second buffer register under control of said level register.
 5. A digital computer according to claim 3, wherein said means for producing the value of theta includes a shift register for storing theta , means for synchronous reverse circulation of said address register and said level register, means for shifting bits from said address register into said shift register for storing theta , and means stopping said means for shifting bits when the l bit in the level register is detected.
 6. A digital computer according to claim 3, further comprises means responsive to overflow of said address register for shifting the l bit in said level register to the next less significant position.
 7. A digital computer according to claim 3, wherein said means for recirculating further comprises means for detecting, during the incrementing recirculation of the address, when the bit in said address register located in the same position as the l bit in said level register has a predetermined one of its two possible values and wherein said means for detecting is operative to institute immediately a further incrementing recirculation without performance of equations (6) to (11).
 8. A digital computer according to claim 1, wherein said means for producing the value of 0 includes a register holding (0- 1/4 ), and wherein said means for operating iteratively comprises control means for adding to or subtracting from the contents of said register for holding ( theta - 1/4 ) the values of tan 12 j in accordance with the values of aj, said control means being responsive to the values of
 9. A digital computer according to claim 1, wherein said means for operating iteratively includes means for counting the iterative operations, first and second shift registers for storing X and Y values, respectively, first and second adder/subtractors connected in recirculating loops including said first and second shift registers, respectively, first and second scalers connected between said first and second shift registers each being connected to the respective non-corresponding one of said first and second adder/subtractors wherein said first and second scalers are controlled by said means for counting so as to introduce the multipliers 2 j in equations (6) and (7), and means for controlling the add and subtract functions of said first and second adder/subtractors to add and subtract selectively in dependence upon the values of aj.
 10. A digital computer according to claim 9, wherein the means for removing the constant K further comprises means for connecting said first and second scalers to the corresponding said first and second adder/subtractors and means for recirculating said first and second shift registers wherein said first and second scalers progress through states of different significance while said first and second adder/subtractors are caused to add and subtract in a predetermined sequence, such that KXl1(1) and KYl1(1) are both multiplied by 1/K.
 11. A special purpose computer for performing the fast Fourier transform on a plurality of data terms in a succession of levels of computation, the number of levels being dependent upon the number of the data terms to be transformed, the computer compriSing: i. data storage means for storing each data term at a predetermined address therein; ii. means for extracting data terms in pairs from said data storage means, the data term pairs being determined in accordance with the level of computation and with their addresses in said data storage means; iii. a central processor arranged, at each level of computation, to receive the pairs of terms extracted from said data storage means said central processor including means for effecting vector rotation of one of the terms of each pair through an angle determined by the addresses of the terms of the pair and the level of computation, and means for adding and subtracting the result of the vector rotation to the other term to form a new pair of terms; and iv. means for returning each new pair of terms to said data storage means, to the respective addresses of the pair of terms from which the new pair of terms was derived; wherein said means for effecting vector rotation comprises: a. means for subjecting the real and imaginary parts, X and Y respectively, of said one term of each pair to a succession of rotational steps, of which the first step is of magnitude 1/4 radians/2 pi and the remaining steps are of magnitude aj tan 12 j radians/2 pi and are constituted by a series of iterative operations of the form Xj 1 Xj + aj 2 jYj (6) Yj 1 Yj - aj 2 jXj (7) where the multipliers aj change between +1 and -1 in such a manner that the algebraic sum of said rotational steps and the respective angle through which vector rotation is to be effected tends to zero, whereby to effect said vector rotation and simultaneously to effect multiplication by a constant K; and b. dividing means for dividing the result of said iterative operations by said constant K. 